home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swagn_r.zip
/
NUMBERS.SWG
/
0039_Complex Numbers.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-01-27
|
1KB
|
50 lines
{
>A>overlooked. No Pascal compiler that I know of (including Turbo) can return
>A>a complex value (i.e., a record or an array) from a FUNCTION. In order for
>
>Hmm...never tried this before. Anyway, the sollution is quite simple:
>just have the megaword-variable public, and pass it to the procedure.
Returning function values by setting a public variable is pretty dangerous -
what if your function calls another that uses the same public to return its
value? In this case, it's not necessary, since there's a trick to let TP
return complex numbers:
}
type
Float = Double;
TComplex = string[2*sizeof(float)];
{ Complex number. Not a true string: the values are stored in binary
format within it. }
TCmplx = record { The internal storage format for TComplex }
len : byte;
r,i : float;
end;
function Re(z:TComplex):float;
begin
Re := TCmplx(z).r;
end;
function Im(z:TComplex):float;
begin
Im := TCmplx(z).i;
end;
function Complex(x,y:float):TComplex;
{ Convert x + iy to complex number. }
var
result : TCmplx;
begin
with result do
begin
len := 2*sizeof(float);
r := x;
i := y;
end;
Complex := TComplex(result);
end;
{You can use these to build up lots of functions returning TComplex types.}